package cc.wfu.infrastructure.persistent.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import lombok.*;

/**
 * <p>
 * 商品 - 订单表
 * </p>
 *
 * @author lijiaqiang@ljq1024.cc
 * @since 2024-06-05
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("product_order")
public class ProductOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 数据库自增ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商品ID
     */
    @TableField("product_id")
    private Long productId;

    /**
     * 商品名称
     */
    @TableField("product_name")
    private String productName;

    /**
     * 商品订单ID
     */
    @TableField("product_order_id")
    private String productOrderId;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 订单金额
     */
    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 支付状态；0-等待支付、1-支付完成、2-支付失败、3-放弃支付
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 下单时间
     */
    @TableField("order_time")
    private LocalDateTime orderTime;

    /**
     * 支付时间
     */
    @TableField("pay_time")
    private LocalDateTime payTime;

    /**
     * 支付方式：0-微信支付...
     */
    @TableField("pay_type")
    private Integer payType;

    /**
     * 支付回调二维码url
     */
    @TableField("pay_url")
    private String payUrl;

    /**
     * 支付金额
     */
    @TableField("pay_amount")
    private BigDecimal payAmount;

    /**
     * 支付成功后回调的交易单号
     */
    @TableField("transaction_id")
    private String transactionId;

    /**
     * 订单状态
     */
    @TableField("order_status")
    private String orderStatus;

    /**
     * sku
     */
    @TableField("sku")
    private Long sku;

    /**
     * 业务防重ID
     */
    @TableField("out_business_no")
    private String outBusinessNo;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;


}
